package br.edu.unifei.cct720.trabalho04.gui.painel;

import java.awt.Color;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JPanel;

import br.edu.unifei.cct720.trabalho04.principal.gui.JanelaPrincipal;
import br.edu.unifei.cct720.trabalho04.utils.AreaDeTrabalho;
import br.edu.unifei.cct720.trabalho04.utils.formas.Objeto;
import br.edu.unifei.cct720.trabalho04.utils.ponto.Ponto;

/**
 * Classe responsavel por implementar um painel
 * que apresenta as formas geometricas da aplicacao
 * 
 * @author fknappe
 *
 */
public class PanelDesenho extends JPanel  {
	
	// Declaracao das variaveis de instacia
	List<Objeto> desenho = null;
	AreaDeTrabalho area = null;
	
	/**
	 * Construtor
	 */
	public PanelDesenho(){
		super();
		desenho = new ArrayList<Objeto>();
	}
	
	/**
	 * Metodo responsavel por plotar os objetos no painel
	 * 
	 * @param List<Objeto> name
	 * @param AreaDeTrabalho area
	 * 
	 * @return void
	 */
	public void desenha(List<Objeto> name, AreaDeTrabalho area){
		this.desenho = name;
		this.area = area;
		this.repaint();
	}
	
	/**
	 * Metodo responsavel por plotar os pixels dos objetos no painel
	 * 
	 * @return void
	 */
	public void paint(Graphics g) {        
	     super.paint(g);	 
	     
	     if (desenho!=null)
			for(int i=0; i<desenho.size(); i++){
				for (Ponto ponto : desenho.get(i).getPontos()) {
					ponto.plota(g);
				}				
				if (desenho.get(i)  instanceof Objeto) {
					Objeto obj = (Objeto)desenho.get(i);					
					g.setColor(Color.BLACK);
					g.drawString(""+(i+1), obj.getCentroG().getX(), obj.getCentroG().getY());
					
				}
			}
	     if (area!=null) {	    	
	    	 area.desenha(g);
	     }
	}
}
